perm filename GEOMES.HDR[GEM,HE]8 blob sn#115326 filedate 1974-08-09 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002
C00006 00003	COMMENT EXTERNAL DECLARATIONS FOR DISPLAY ROUTINES
C00007 00004	COMMENT GEM-NODE NAMES FOR LINKS AND DATA
C00010 ENDMK
C⊗;

	REQUIRE "GEOMED.REL[GEM,HE]"	LOAD_MODULE;
	REQUIRE "UTILTY.REL[GEM,HE]"	LOAD_MODULE;
	REQUIRE "EULER.REL[GEM,HE]"	LOAD_MODULE;
	REQUIRE "EUCLID.REL[GEM,HE]"	LOAD_MODULE;
	REQUIRE "OCCULT.REL[GEM,HE]"	LOAD_MODULE;
	REQUIRE "BIN.REL[GEM,HE]"	LOAD_MODULE;

	REQUIRE "⊂⊃⊂⊃" DELIMITERS;
	DEFINE $UBR=⊂EXTERNAL SIMPLE INTEGER PROCEDURE⊃;

COMMENT BASIC GEOMED, IO AND DISPLAY;
	INTERNAL INTEGER RESULT;EXTERNAL INTEGER UNIVERSE;
	$UBR MKUNIV;
	$UBR GEOMED;
	$UBR GEODPY;
	$UBR SHOW1(INTEGER WINDOW,GLASS);
	$UBR SHOW2(INTEGER WINDOW,GLASS);
	$UBR PPROJ(INTEGER CAMERA,WORLD);

	$UBR INGEM(STRING FILNAM);
	$UBR INB3D(STRING FILNAM);
	$UBR INCAM(STRING FILNAM);
	$UBR FDNAME(STRING FILNAM);
	$UBR OUTGEM(STRING FILNAM;INTEGER B);
	$UBR OUTB3D(STRING FILNAM;INTEGER B);
	$UBR OUTCAM(STRING FILNAM;INTEGER B);
	$UBR PLOTO(STRING FILNAM);

COMMENT EUCLID;
	$UBR TRANSL(INTEGER Q;REAL X,Y,Z);
	$UBR ROTATE(INTEGER Q;REAL X,Y,Z);
	$UBR SHRINK(INTEGER Q;REAL X,Y,Z);

	$UBR APTRAN(INTEGER Q,ET);
	$UBR INTRAN(INTEGER ET);
	EXTERNAL SIMPLE  REAL   PROCEDURE DISTAN(INTEGER Q1,Q2);
	EXTERNAL SIMPLE  REAL   PROCEDURE DETERM(INTEGER Q);

COMMENT WINGED EDGE PRIMITIVES;
	$UBR MKNODE(INTEGER TYP);$UBR KLNODE(INTEGER NODE);
	$UBR MKWORLD;$UBR MKCAMERA(INTEGER WORLD);
	$UBR MKWINDOW(INTEGER CAMERA,WINDOW);

	$UBR MKB(INTEGER WORLD);$UBR KLB(INTEGER BNEW);
	$UBR KLBFEV(INTEGER BNEW);

	$UBR MKBFV;
	$UBR MKF(INTEGER FNEW);	$UBR KLF(INTEGER FNEW);
	$UBR MKE(INTEGER ENEW);	$UBR KLE(INTEGER ENEW);
	$UBR MKV(INTEGER VNEW);	$UBR KLV(INTEGER VNEW);

	$UBR WING(INTEGER E1,E2);$UBR LINKED(INTEGER Q1,Q2);

	$UBR ECW(INTEGER Q1,Q2);$UBR ECCW(INTEGER Q1,Q2);
	$UBR OTHER(INTEGER Q1,Q2);
	$UBR VCW(INTEGER E,F);	$UBR VCCW(INTEGER E,F);
	$UBR FCW(INTEGER E,V);	$UBR FCCW(INTEGER E,V);

	$UBR BGET(INTEGER Q);
	$UBR BDET(INTEGER Q);
	$UBR BATT(INTEGER Q1,Q2);

COMMENT EULER PRIMITIVES;
	$UBR INVERT(INTEGER E);		$UBR EVERT(INTEGER B);
	$UBR MKEV(INTEGER F,V);		$UBR MKFE(INTEGER V1,F,V2);
	$UBR ESPLIT(INTEGER E);
	
	$UBR KLFE(INTEGER E);
	$UBR KLEV(INTEGER V);
	$UBR KLVE(INTEGER E);

	$UBR MKCOPY(INTEGER B);
	$UBR GLUE(INTEGER F1,F2);
	$UBR GLUEE(INTEGER F1,V1,F2,V2);

	$UBR SWEEP(INTEGER F,FLG);
	$UBR ROTCOM(INTEGER F);
	$UBR PYRAMID(INTEGER FV);

	$UBR REMOVF(INTEGER F);
	$UBR FVDUAL(INTEGER B);

	$UBR MKCUBE(REAL A,B,C);
	$UBR MKCYLN(REAL R,N,Z);
	$UBR MKBALL(REAL R,M,N);
COMMENT EXTERNAL DECLARATIONS FOR DISPLAY ROUTINES;

$UBR DPYSET(INTEGER ARRAY PTR);
$UBR DPYBIG(INTEGER SIZE);
$UBR DPYBRT(INTEGER SIZE);

$UBR AVECT(INTEGER X,Y);
$UBR AIVECT(INTEGER X,Y);
$UBR RVECT(INTEGER X,Y);
$UBR RIVECT(INTEGER X,Y);

$UBR DPYSST(STRING S);
$UBR DPYOUT(INTEGER POG);
$UBR DPYSTR(REFERENCE INTEGER TEXT);

$UBR DTYO(INTEGER BPTR);
$UBR OCTDPY(INTEGER X);
$UBR DECDPY(INTEGER X);
$UBR FLODPY(REAL X;INTEGER PLACES(4));

COMMENT GEM-NODE NAMES FOR LINKS AND DATA;

	$UBR CAR(INTEGER Q);
	$UBR CDR(INTEGER Q);
	$UBR DIP(INTEGER AC,Q);
	$UBR DAP(INTEGER AC,Q);

SIMPLE INTEGER PROCEDURE XWD(INTEGER Q1,Q2);START_CODE HRLZ 1,Q1;HRR 1,Q2;END;


COMMENT WORLD LOCUS;
	DEFINE XWC(V)=⊂MEMORY[V-3,REAL]⊃;
	DEFINE YWC(V)=⊂MEMORY[V-2,REAL]⊃;
	DEFINE ZWC(V)=⊂MEMORY[V-1,REAL]⊃;
	DEFINE AA(V)=⊂MEMORY[V-3,REAL]⊃;
	DEFINE BB(V)=⊂MEMORY[V-2,REAL]⊃;
	DEFINE CC(V)=⊂MEMORY[V-1,REAL]⊃;
	DEFINE BBIT=⊂'1000000⊃;

COMMENT ROTATION MATRIX;
	DEFINE IX(V)=⊂MEMORY[V+0,REAL]⊃;
	DEFINE IY(V)=⊂MEMORY[V+1,REAL]⊃;
	DEFINE IZ(V)=⊂MEMORY[V+2,REAL]⊃;
	DEFINE JX(V)=⊂MEMORY[V+3,REAL]⊃;
	DEFINE JY(V)=⊂MEMORY[V+4,REAL]⊃;
	DEFINE JZ(V)=⊂MEMORY[V+5,REAL]⊃;
	DEFINE KX(V)=⊂MEMORY[V+6,REAL]⊃;
	DEFINE KY(V)=⊂MEMORY[V+7,REAL]⊃;
	DEFINE KZ(V)=⊂MEMORY[V+8,REAL]⊃;

COMMENT PERSPECTIVE-PROJECTED LOCUS;
	DEFINE XPP(V)=⊂MEMORY[V+4,REAL]⊃;
	DEFINE YPP(V)=⊂MEMORY[V+5,REAL]⊃;
	DEFINE ZPP(V)=⊂MEMORY[V+6,REAL]⊃;

DEFINE NFACE(Q)=⊂CAR((Q)+1)⊃;DEFINE PFACE(Q)=⊂CDR((Q)+1)⊃;
DEFINE NED(Q)=⊂CAR((Q)+2)⊃;DEFINE PED(Q)=⊂CDR((Q)+2)⊃;
DEFINE NVT(Q)=⊂CAR((Q)+3)⊃;DEFINE PVT(Q)=⊂CDR((Q)+3)⊃;
DEFINE NCW(Q)=⊂CAR((Q)+4)⊃;DEFINE PCW(Q)=⊂CDR((Q)+4)⊃;
DEFINE NCCW(Q)=⊂CAR((Q)+5)⊃;DEFINE PCCW(Q)=⊂CDR((Q)+5)⊃;

DEFINE DAD(Q)=⊂CAR((Q)+4)⊃;DEFINE SON(Q)=⊂CDR((Q)+4)⊃;
DEFINE BRO(Q)=⊂CAR((Q)+5)⊃;DEFINE SIS(Q)=⊂CDR((Q)+5)⊃;
DEFINE ALT(Q)=⊂CAR((Q)+6)⊃;DEFINE ALT2(Q)=⊂CDR((Q)+6)⊃;
DEFINE LOCOR(Q)=⊂CDR((Q)+6)⊃;
DEFINE CW(Q)=⊂CAR((Q)+7)⊃;DEFINE CCW(Q)=⊂CDR((Q)+7)⊃;
DEFINE CAR8(Q)=⊂CAR((Q)+8)⊃;DEFINE CDR8(Q)=⊂CDR((Q)+8)⊃;

DEFINE NFACE$(A,Q)=⊂DIP((A),(Q)+1)⊃;DEFINE PFACE$(A,Q)=⊂DAP((A),(Q)+1)⊃;
DEFINE NED$(A,Q)=⊂DIP((A),(Q)+2)⊃;DEFINE PED$(A,Q)=⊂DAP((A),(Q)+2)⊃;
DEFINE NVT$(A,Q)=⊂DIP((A),(Q)+3)⊃;DEFINE PVT$(A,Q)=⊂DAP((A),(Q)+3)⊃;

REQUIRE UNSTACK_DELIMITERS;